#define SIMDE_TEST_X86_AVX512_INSN 4dpwssds

#include <test/x86/avx512/test-avx512.h>
#include <simde/x86/avx512/4dpwssds.h>

static int
test_simde_mm512_4dpwssds_epi32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const int32_t src[16];
    const int32_t a0[16];
    const int32_t a1[16];
    const int32_t a2[16];
    const int32_t a3[16];
    const int32_t b[4];
    const int32_t r[16];
  } test_vec[] = {
    { {  INT32_C(  1780258707), -INT32_C(  1866417388),  INT32_C(  2059723712), -INT32_C(   131391471),  INT32_C(     2555959),  INT32_C(  1994382078),  INT32_C(  1200723961),  INT32_C(  1076071852),
         INT32_C(   967458596), -INT32_C(  1144427525),  INT32_C(  1597345358), -INT32_C(   447258194),  INT32_C(  1608941153),  INT32_C(  1389741401),  INT32_C(   144270940),  INT32_C(   407420148) },
      { -INT32_C(   145624068), -INT32_C(  1397613730),  INT32_C(  1460397993), -INT32_C(  1438883000),  INT32_C(   973677281),  INT32_C(  1133305831),  INT32_C(   961291589), -INT32_C(   565013278),
        -INT32_C(   438983801),  INT32_C(  1737590718), -INT32_C(  1212244626), -INT32_C(   513672448),  INT32_C(    85748253), -INT32_C(  1891063735), -INT32_C(  1329031986), -INT32_C(  1332864471) },
      {  INT32_C(  2090230718),  INT32_C(  1491347434), -INT32_C(  1005608252), -INT32_C(  1146720099),  INT32_C(   616612571),  INT32_C(   951257194), -INT32_C(   957842275),  INT32_C(  1417049750),
        -INT32_C(  1009709863), -INT32_C(   132336332), -INT32_C(   172151977),  INT32_C(  2008048540), -INT32_C(  1885638619),  INT32_C(   365449080),  INT32_C(  1641787595),  INT32_C(    11948583) },
      { -INT32_C(  1832614050), -INT32_C(  1819549636), -INT32_C(  1484240885), -INT32_C(   803325781),  INT32_C(   559921832), -INT32_C(   734648567), -INT32_C(    13298984), -INT32_C(  1023415452),
        -INT32_C(  1370111118), -INT32_C(  1354571613), -INT32_C(   749286872), -INT32_C(  1415351037),  INT32_C(   952893999),  INT32_C(    34341674),  INT32_C(  2030125333), -INT32_C(  1623523283) },
      {  INT32_C(  1733202116), -INT32_C(  1743351696),  INT32_C(  1567321434),  INT32_C(   285806306),  INT32_C(   994694417), -INT32_C(   314747432), -INT32_C(  1016709482),  INT32_C(    40084030),
        -INT32_C(  1553288910), -INT32_C(  1690599359), -INT32_C(   805722131), -INT32_C(   958397771), -INT32_C(  1342101033),  INT32_C(   362626686), -INT32_C(  1143470980), -INT32_C(   658687066) },
      {  INT32_C(   763045868), -INT32_C(  1781942360),  INT32_C(   325435998), -INT32_C(  1680194108) },
      {              INT32_MAX,              INT32_MIN,              INT32_MAX, -INT32_C(   913086168),  INT32_C(    45638764),              INT32_MAX,              INT32_MAX,              INT32_MAX,
                     INT32_MAX,              INT32_MIN,              INT32_MAX,              INT32_MIN,              INT32_MAX,              INT32_MAX,  INT32_C(   113633430),  INT32_C(  1473587499) } },
    { { -INT32_C(   313795729), -INT32_C(  1778194150), -INT32_C(  1823351827),  INT32_C(    57347862), -INT32_C(   567220426), -INT32_C(    59442786),  INT32_C(  2131745211), -INT32_C(  1927550690),
        -INT32_C(   545560891),  INT32_C(  1014332751),  INT32_C(  1875887960),  INT32_C(   208813014), -INT32_C(  1058299358),  INT32_C(  1471963036),  INT32_C(  1456982840),  INT32_C(  2061824693) },
      { -INT32_C(  1470537896),  INT32_C(   904187612),  INT32_C(  1805956245),  INT32_C(   293082863),  INT32_C(  1423008696), -INT32_C(    89354814),  INT32_C(   223380312), -INT32_C(   846777227),
         INT32_C(  1886773395),  INT32_C(  1151687343), -INT32_C(    38778610),  INT32_C(   386803807),  INT32_C(  1298980747), -INT32_C(  1001973652),  INT32_C(   282236827),  INT32_C(  1608341964) },
      { -INT32_C(   372288710), -INT32_C(  1154648915),  INT32_C(   481877437), -INT32_C(  1875589627),  INT32_C(   299737253),  INT32_C(  1406477496), -INT32_C(  2006734916),  INT32_C(  1005010945),
         INT32_C(  1076148115), -INT32_C(   369405653),  INT32_C(   872788783),  INT32_C(   516241785), -INT32_C(  1859149095), -INT32_C(  2082208313), -INT32_C(  1391769684),  INT32_C(   468251272) },
      { -INT32_C(   715387735), -INT32_C(  1916905634), -INT32_C(  2067676405), -INT32_C(   693926147), -INT32_C(   261565911), -INT32_C(  2072818473),  INT32_C(   473005716),  INT32_C(   439818864),
        -INT32_C(  2064674010), -INT32_C(   166613525),  INT32_C(  1836766064), -INT32_C(  2109465255), -INT32_C(   948785936), -INT32_C(  1941182984), -INT32_C(   727155357), -INT32_C(  1108418409) },
      {  INT32_C(  1581440371), -INT32_C(    95136886), -INT32_C(  2140614874), -INT32_C(   603804436),  INT32_C(  1352955224), -INT32_C(  1092751526),  INT32_C(    59934060), -INT32_C(   641630107),
        -INT32_C(   415825059),  INT32_C(  2111933526),  INT32_C(  1207781723),  INT32_C(  1294270453), -INT32_C(   811677580),  INT32_C(   613252023),  INT32_C(  1713839872), -INT32_C(    62920545) },
      {  INT32_C(  1122203371),  INT32_C(  1572848642),  INT32_C(    61193230),  INT32_C(   810666427) },
      { -INT32_C(  1005120063),              INT32_MIN,              INT32_MIN,  INT32_C(   736281318), -INT32_C(   596895566), -INT32_C(  1299493895),              INT32_MAX,              INT32_MIN,
        -INT32_C(   890523333),              INT32_MAX,              INT32_MAX,  INT32_C(  1297721585),              INT32_MIN,              INT32_MAX,              INT32_MAX,              INT32_MAX } },
    { {  INT32_C(  1224732561),  INT32_C(  1785498730),  INT32_C(  1255183531),  INT32_C(  1749421948), -INT32_C(  2002114170), -INT32_C(    68785683), -INT32_C(   520123611), -INT32_C(   451915692),
        -INT32_C(  1456664769),  INT32_C(  1175689883), -INT32_C(  1433344978),  INT32_C(  2031277811), -INT32_C(   318587649),  INT32_C(  1256777765), -INT32_C(   953424013),  INT32_C(  1990998839) },
      { -INT32_C(   434120373), -INT32_C(  1590873229),  INT32_C(   172801303), -INT32_C(  1820041580),  INT32_C(  1082164763), -INT32_C(   510957202), -INT32_C(  2002209200),  INT32_C(  1023300849),
        -INT32_C(  1591534035),  INT32_C(  1749176401), -INT32_C(  1586328051),  INT32_C(   137754349), -INT32_C(   364333700),  INT32_C(  1875628830),  INT32_C(  2079814537), -INT32_C(   172493369) },
      {  INT32_C(  1687607827),  INT32_C(   952948778),  INT32_C(  1423523687), -INT32_C(  1302589899), -INT32_C(   493050684),  INT32_C(    22112376), -INT32_C(  1552135973),  INT32_C(  1368929342),
         INT32_C(   968240654),  INT32_C(  1836155398), -INT32_C(   138327359),  INT32_C(   497622361),  INT32_C(   989808066), -INT32_C(  1992601171), -INT32_C(   684935015), -INT32_C(    97925908) },
      { -INT32_C(   130818062),  INT32_C(   593929313),  INT32_C(  1209673711),  INT32_C(   124109637), -INT32_C(  1237228536),  INT32_C(  1329560757),  INT32_C(   539388724),  INT32_C(   555437871),
        -INT32_C(  1877389778), -INT32_C(   491552781), -INT32_C(   332739161), -INT32_C(  1728868464), -INT32_C(  1454492429), -INT32_C(   436695632),  INT32_C(   654647032), -INT32_C(  1672994706) },
      {  INT32_C(  1647075951), -INT32_C(  2008752159),  INT32_C(  1014263468), -INT32_C(   254449667),  INT32_C(  1285104539), -INT32_C(  1456369231),  INT32_C(   517027504), -INT32_C(   960882345),
         INT32_C(  1562961787),  INT32_C(  1944415430), -INT32_C(   676373798),  INT32_C(  1573356737),  INT32_C(  1504272808), -INT32_C(  1576871182),  INT32_C(  1740690192),  INT32_C(  1747811309) },
      {  INT32_C(   684021090), -INT32_C(  1684296767), -INT32_C(   965588219),  INT32_C(  1998797519) },
      {              INT32_MAX,              INT32_MAX,              INT32_MAX,              INT32_MAX,              INT32_MIN, -INT32_C(  1140728141), -INT32_C(  1748060802), -INT32_C(  2079757434),
                     INT32_MIN,              INT32_MAX,              INT32_MIN,              INT32_MAX, -INT32_C(   858900495),              INT32_MAX, -INT32_C(  1531193712),              INT32_MAX } },
    { { -INT32_C(  1915695973), -INT32_C(  1221536858), -INT32_C(  1826688858), -INT32_C(   839103381),  INT32_C(  1677115809),  INT32_C(  1912508780), -INT32_C(  1405586980),  INT32_C(  1176722347),
        -INT32_C(   824970200),  INT32_C(  1837433799),  INT32_C(  1593943284), -INT32_C(  1859256848),  INT32_C(   737420222), -INT32_C(  1851984972),  INT32_C(   255710308),  INT32_C(  1481990192) },
      {  INT32_C(   455485524),  INT32_C(   545893420),  INT32_C(  1082100304),  INT32_C(  1171369095), -INT32_C(  2072983857),  INT32_C(   487919033),  INT32_C(   288117473),  INT32_C(   124354994),
        -INT32_C(   719155031), -INT32_C(  1930056900), -INT32_C(  1127451339), -INT32_C(   251486943),  INT32_C(   477459043),  INT32_C(  1631160959), -INT32_C(  1905105444), -INT32_C(  1869226778) },
      { -INT32_C(  1469728660), -INT32_C(  1724621981), -INT32_C(   246087472),  INT32_C(    31610781),  INT32_C(  1226659786), -INT32_C(  1112909855), -INT32_C(  1555292740),  INT32_C(  1697899001),
        -INT32_C(    49440615), -INT32_C(  1013562893), -INT32_C(   558503103),  INT32_C(   232757059), -INT32_C(   799605265),  INT32_C(   277741908),  INT32_C(   397662750),  INT32_C(  1434248891) },
      {  INT32_C(  1918011775),  INT32_C(   188147914),  INT32_C(   384429011),  INT32_C(  1898170754),  INT32_C(   440564422), -INT32_C(  1725247365),  INT32_C(  1706090154),  INT32_C(  1136274628),
         INT32_C(  2142637237), -INT32_C(   930419468),  INT32_C(  1507750871),  INT32_C(    46858812), -INT32_C(   149156484), -INT32_C(  2020587555), -INT32_C(   370393051),  INT32_C(   556640108) },
      { -INT32_C(  1465850957), -INT32_C(  1502598449), -INT32_C(   620802403), -INT32_C(   857945520), -INT32_C(  1262224937),  INT32_C(  1698386752), -INT32_C(    11655021), -INT32_C(  2111800369),
         INT32_C(   757776478), -INT32_C(  1999398166),  INT32_C(   962778089),  INT32_C(  1963343517),  INT32_C(  1999227191), -INT32_C(  1327733475),  INT32_C(  1555049357),  INT32_C(    98488486) },
      {  INT32_C(  2066876817), -INT32_C(  1945958749),  INT32_C(  1992713689), -INT32_C(   605303644) },
      {              INT32_MIN,              INT32_MIN,              INT32_MIN, -INT32_C(  2002705142),              INT32_MAX,              INT32_MAX,              INT32_MIN,              INT32_MAX,
                     INT32_MIN,              INT32_MAX,              INT32_MAX,              INT32_MIN,              INT32_MAX,              INT32_MIN, -INT32_C(   136205204),              INT32_MAX } },
    { { -INT32_C(  1303177835),  INT32_C(   123940730),  INT32_C(    23270234),  INT32_C(  1946567139), -INT32_C(   286246838),  INT32_C(   393933630), -INT32_C(    41009063), -INT32_C(  1562871540),
         INT32_C(   139733902), -INT32_C(  1257261221), -INT32_C(  1363774774), -INT32_C(    31277900),  INT32_C(   871109365),  INT32_C(  1598777094), -INT32_C(  1268983385), -INT32_C(   514444206) },
      { -INT32_C(  1142314400),  INT32_C(   745601378),  INT32_C(   534390635), -INT32_C(   669057565),  INT32_C(   353110543),  INT32_C(   427054961), -INT32_C(  2100441040),  INT32_C(  1700995845),
         INT32_C(   790646221), -INT32_C(  1319333818), -INT32_C(  1680787785),  INT32_C(  1131671347),  INT32_C(  1800962041),  INT32_C(   109366742), -INT32_C(  1568058979),  INT32_C(  1091038324) },
      {  INT32_C(  2138122041),  INT32_C(  1865534904),  INT32_C(   923402755), -INT32_C(   361070863), -INT32_C(   732572931),  INT32_C(  1037752735), -INT32_C(  1629527254), -INT32_C(  1981749424),
        -INT32_C(   972467954),  INT32_C(   557201950),  INT32_C(   760758332), -INT32_C(  1139289410),  INT32_C(  1150315941),  INT32_C(  1904306758),  INT32_C(   504324558),  INT32_C(  1453846344) },
      {  INT32_C(  1579003968),  INT32_C(   645944298),  INT32_C(  1381226643),  INT32_C(  1343122347),  INT32_C(   513056472), -INT32_C(   695265784), -INT32_C(  1074487433), -INT32_C(   820667250),
         INT32_C(   925708876),  INT32_C(   425569669),  INT32_C(   829141382), -INT32_C(   192841444),  INT32_C(   521278743), -INT32_C(  1560894933), -INT32_C(   815666623), -INT32_C(   744589434) },
      {  INT32_C(   789236905), -INT32_C(    12032135),  INT32_C(   875606808),  INT32_C(  1126740268), -INT32_C(   228443193),  INT32_C(   513104093), -INT32_C(   907151805),  INT32_C(   396135533),
        -INT32_C(   783899048),  INT32_C(   651267598),  INT32_C(  1834680641),  INT32_C(  2058388403), -INT32_C(  1687416130), -INT32_C(  1363607189),  INT32_C(  1702340600), -INT32_C(  1954802637) },
      { -INT32_C(   933444934), -INT32_C(  1846596272), -INT32_C(   486651345), -INT32_C(  1940082995) },
      {              INT32_MIN, -INT32_C(   801483946), -INT32_C(   906826093),              INT32_MAX, -INT32_C(  1826180388),  INT32_C(    52903383),  INT32_C(  1593655813),              INT32_MIN,
         INT32_C(  1704358571),              INT32_MIN,              INT32_MIN,  INT32_C(   394174660),              INT32_MAX,              INT32_MAX,              INT32_MIN, -INT32_C(  1450102974) } },
    { {  INT32_C(   740804801), -INT32_C(  1025842742), -INT32_C(  1155051128),  INT32_C(   541500517), -INT32_C(  1209490842), -INT32_C(    12003376), -INT32_C(   270448863), -INT32_C(  1233437195),
        -INT32_C(   807230971),  INT32_C(   194100355),  INT32_C(  1942403342), -INT32_C(  1013773219),  INT32_C(  2138733743),  INT32_C(  1971241811), -INT32_C(    10199286), -INT32_C(  1581850724) },
      {  INT32_C(    91330689),  INT32_C(  1661993557),  INT32_C(   416733115), -INT32_C(  1831048477),  INT32_C(   957437670),  INT32_C(   598642457), -INT32_C(  1977412882),  INT32_C(  1932319217),
        -INT32_C(   965173903),  INT32_C(  1529448607),  INT32_C(  1131610207),  INT32_C(  1356156778), -INT32_C(  1081481306),  INT32_C(  1709389942),  INT32_C(  1022297674),  INT32_C(  1353653215) },
      {  INT32_C(  1477912504),  INT32_C(   263405743), -INT32_C(  1437456832),  INT32_C(   486156150), -INT32_C(  2049211378),  INT32_C(   116047548), -INT32_C(  1555899964), -INT32_C(  1376456203),
        -INT32_C(   939193576), -INT32_C(  1932019637),  INT32_C(  1429613023),  INT32_C(  1601253712),  INT32_C(  1910787253), -INT32_C(   814232053), -INT32_C(  1670137177), -INT32_C(  1001756757) },
      { -INT32_C(  1114878094), -INT32_C(   414620920), -INT32_C(   600014708),  INT32_C(  1715187121),  INT32_C(    81207289), -INT32_C(  1781248275), -INT32_C(  1271838968),  INT32_C(   544766894),
        -INT32_C(   740490037), -INT32_C(   205904025),  INT32_C(  1490024103), -INT32_C(  1665266781),  INT32_C(   413242666), -INT32_C(   324176413),  INT32_C(  1788927676),  INT32_C(   629807194) },
      { -INT32_C(  2080872676),  INT32_C(   896971406),  INT32_C(  1267549608),  INT32_C(  2078755664), -INT32_C(   996964128), -INT32_C(  1179631363),  INT32_C(  2015580190), -INT32_C(  2070041240),
        -INT32_C(  1559784171), -INT32_C(   270959289),  INT32_C(   322594498), -INT32_C(  1836178766), -INT32_C(  1470750294),  INT32_C(  2137065057), -INT32_C(  1091009194),  INT32_C(  1195545906) },
      {  INT32_C(  1928022315), -INT32_C(  1990015802), -INT32_C(   593716182),  INT32_C(  1768893118) },
      {  INT32_C(   735108060),              INT32_MIN,              INT32_MIN,              INT32_MAX,              INT32_MIN, -INT32_C(   695048111), -INT32_C(   243719912),              INT32_MIN,
                     INT32_MIN,  INT32_C(  2074039483),              INT32_MAX,              INT32_MIN,              INT32_MAX,              INT32_MAX,  INT32_C(   668718559),              INT32_MIN } },
    { { -INT32_C(  1408121525),  INT32_C(   573272780),  INT32_C(   719397879), -INT32_C(   462347335),  INT32_C(   861297773),  INT32_C(  1270659104),  INT32_C(   321345621), -INT32_C(   847473022),
         INT32_C(   679054684), -INT32_C(   146103040), -INT32_C(  2128532536), -INT32_C(  1134193841),  INT32_C(   284146927), -INT32_C(   916738956), -INT32_C(  2015526396),  INT32_C(  1968462105) },
      { -INT32_C(   409088281),  INT32_C(  1004463987),  INT32_C(  1656553491), -INT32_C(  2111954285),  INT32_C(  1402080734), -INT32_C(  1105400391), -INT32_C(  1991902864),  INT32_C(   989763923),
        -INT32_C(   635331737), -INT32_C(  1793654910), -INT32_C(  1829252097), -INT32_C(   736815627), -INT32_C(   601381085),  INT32_C(    93995925), -INT32_C(  1869684931), -INT32_C(   523596679) },
      { -INT32_C(  1447302361), -INT32_C(   364916246), -INT32_C(  1719912796),  INT32_C(  1869451596), -INT32_C(   833907655),  INT32_C(   366208728),  INT32_C(  1051025861),  INT32_C(   337604589),
         INT32_C(  1153292890),  INT32_C(  1328479403),  INT32_C(  2145954611),  INT32_C(  1978553916), -INT32_C(  1035781654), -INT32_C(   438888929),  INT32_C(  1680047223),  INT32_C(  1165509355) },
      { -INT32_C(   947243492),  INT32_C(  1695987762), -INT32_C(  1595605149),  INT32_C(  1058394709),  INT32_C(   721574156), -INT32_C(   418326161),  INT32_C(  1095447638), -INT32_C(  1819818890),
         INT32_C(   744100346),  INT32_C(   764572105), -INT32_C(   976390544),  INT32_C(  1426383433), -INT32_C(  1417673157),  INT32_C(   915575264),  INT32_C(   997711301), -INT32_C(  1680933215) },
      { -INT32_C(   641193713),  INT32_C(   168188570),  INT32_C(   433050576), -INT32_C(   244395083), -INT32_C(  1164120102),  INT32_C(  1173368448), -INT32_C(  1384093941),  INT32_C(  1967673190),
         INT32_C(   307105912),  INT32_C(   991712362), -INT32_C(   581637337), -INT32_C(  1731279938),  INT32_C(   844262066), -INT32_C(  1552465256),  INT32_C(   273741738), -INT32_C(  1098540730) },
      {  INT32_C(   349230249),  INT32_C(  1347415080), -INT32_C(  1775393833),  INT32_C(   405732198) },
      {              INT32_MIN,  INT32_C(  2111107528),              INT32_MAX, -INT32_C(  1560276792),              INT32_MAX,              INT32_MAX,  INT32_C(   413902546), -INT32_C(  1783655371),
                     INT32_MAX, -INT32_C(  1242850983),              INT32_MIN,              INT32_MIN,  INT32_C(  1535807097),              INT32_MIN,              INT32_MIN,              INT32_MAX } },
    { { -INT32_C(    45448859),  INT32_C(  1839251907), -INT32_C(     8523335),  INT32_C(   868090762), -INT32_C(    12087593),  INT32_C(  1380947579), -INT32_C(  1595376582), -INT32_C(   591849609),
         INT32_C(  1540948888),  INT32_C(  2127133381), -INT32_C(   176339349),  INT32_C(   539507529),  INT32_C(  1159753930),  INT32_C(  1083666182),  INT32_C(  1675722988),  INT32_C(   792763031) },
      {  INT32_C(  1653217693), -INT32_C(    18852973), -INT32_C(   470589798),  INT32_C(  1661213849), -INT32_C(  1834474356),  INT32_C(  2144551059),  INT32_C(  1474540736), -INT32_C(   343530674),
        -INT32_C(   800190404), -INT32_C(    20042140),  INT32_C(   652329612),  INT32_C(  1787422174), -INT32_C(  1644416503),  INT32_C(   840748914), -INT32_C(   779485309),  INT32_C(  1606225698) },
      { -INT32_C(  2094068961), -INT32_C(   964559559), -INT32_C(  1645452353),  INT32_C(  1376220488),  INT32_C(   435094695),  INT32_C(  1464536019),  INT32_C(   757650443),  INT32_C(    59565539),
         INT32_C(   713473008),  INT32_C(  2028996793), -INT32_C(  1290347413), -INT32_C(   117105327), -INT32_C(   183307231),  INT32_C(   189554176),  INT32_C(   372798514),  INT32_C(  1243202906) },
      {  INT32_C(   963944320),  INT32_C(   313681063), -INT32_C(  1832466368),  INT32_C(   126602213), -INT32_C(  1057186368),  INT32_C(   785074427),  INT32_C(   373556156),  INT32_C(  1231117768),
        -INT32_C(  1534929412),  INT32_C(  2058761274), -INT32_C(   502498052),  INT32_C(   149526344),  INT32_C(   818472245), -INT32_C(   379677907),  INT32_C(  1593877142), -INT32_C(    56073729) },
      {  INT32_C(  1889544758),  INT32_C(  1542149727),  INT32_C(   457045971), -INT32_C(  1004329329),  INT32_C(   955575051),  INT32_C(   337793918), -INT32_C(   177003787), -INT32_C(  1175381117),
        -INT32_C(  1523936954), -INT32_C(  1174399513), -INT32_C(  1680523764),  INT32_C(  1885337700),  INT32_C(  1638421731), -INT32_C(  1669936473),  INT32_C(  1871833580),  INT32_C(  1261011461) },
      { -INT32_C(    68136173),  INT32_C(  1958080616), -INT32_C(  1827632338),  INT32_C(  1728278403) },
      {  INT32_C(   362820912),              INT32_MAX,  INT32_C(   967090470),              INT32_MAX,  INT32_C(  1806753744),              INT32_MAX,              INT32_MIN,              INT32_MIN,
                     INT32_MAX,              INT32_MAX,              INT32_MIN,              INT32_MAX,              INT32_MAX,              INT32_MAX,              INT32_MAX,              INT32_MAX } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m512i src = simde_mm512_loadu_epi32(test_vec[i].src);
    simde__m512i a0 = simde_mm512_loadu_epi32(test_vec[i].a0);
    simde__m512i a1 = simde_mm512_loadu_epi32(test_vec[i].a1);
    simde__m512i a2 = simde_mm512_loadu_epi32(test_vec[i].a2);
    simde__m512i a3 = simde_mm512_loadu_epi32(test_vec[i].a3);
    simde__m128i b = simde_x_mm_loadu_epi32(test_vec[i].b);
    simde__m512i r = simde_mm512_4dpwssds_epi32(src, a0, a1, a2, a3, &b);
    simde_test_x86_assert_equal_i32x16(r, simde_mm512_loadu_epi32(test_vec[i].r));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m512i src = simde_test_x86_random_i32x16();
    simde__m512i a0 = simde_test_x86_random_i32x16();
    simde__m512i a1 = simde_test_x86_random_i32x16();
    simde__m512i a2 = simde_test_x86_random_i32x16();
    simde__m512i a3 = simde_test_x86_random_i32x16();
    simde__m128i b = simde_test_x86_random_i32x4();
    simde__m512i r = simde_mm512_4dpwssds_epi32(src, a0, a1, a2, a3, &b);

    simde_test_x86_write_i32x16(2, src, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_i32x16(2, a0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i32x16(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i32x16(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i32x16(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i32x16(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm512_mask_4dpwssds_epi32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const int32_t src[16];
    const simde__mmask16 k;
    const int32_t a0[16];
    const int32_t a1[16];
    const int32_t a2[16];
    const int32_t a3[16];
    const int32_t b[4];
    const int32_t r[16];
  } test_vec[] = {
    { {  INT32_C(  1791536067),  INT32_C(  1644641910),  INT32_C(   768776232),  INT32_C(   779680539), -INT32_C(  1238800306), -INT32_C(  2027233448), -INT32_C(   317048214),  INT32_C(  1834229162),
         INT32_C(  1054350792), -INT32_C(  2086543525), -INT32_C(  1833929865), -INT32_C(  1128191890), -INT32_C(   378344816),  INT32_C(   863018185), -INT32_C(  2128508201),  INT32_C(  1877898663) },
      UINT16_C(50834),
      {  INT32_C(  1336274606),  INT32_C(   583146865),  INT32_C(  1883910319),  INT32_C(  1583078380),  INT32_C(   888808644),  INT32_C(  2042548568),  INT32_C(  1106142546), -INT32_C(  2113437228),
        -INT32_C(   523129489),  INT32_C(  2030212042), -INT32_C(  1343599165), -INT32_C(   334674648), -INT32_C(  1054865303),  INT32_C(   742055641),  INT32_C(   393029955),  INT32_C(   429552810) },
      { -INT32_C(   335975647), -INT32_C(  1033503489),  INT32_C(  1903316809), -INT32_C(    44204140),  INT32_C(  1639939463), -INT32_C(  1634862757), -INT32_C(   860489182), -INT32_C(  1864020114),
        -INT32_C(  1166286917),  INT32_C(   612163803), -INT32_C(  1013584337), -INT32_C(   171838866), -INT32_C(   900300689), -INT32_C(  1670847623),  INT32_C(  1281891805),  INT32_C(   685526637) },
      {  INT32_C(   149051181),  INT32_C(  1730960952), -INT32_C(  1154760371),  INT32_C(   582020275), -INT32_C(   437516436), -INT32_C(   931048214), -INT32_C(   569054607),  INT32_C(  1694953528),
         INT32_C(  2137909319), -INT32_C(  1796761273),  INT32_C(   223285850),  INT32_C(  1781530622), -INT32_C(   246473978), -INT32_C(   524693137), -INT32_C(   205533765),  INT32_C(    72926653) },
      { -INT32_C(   175848018), -INT32_C(  1198953634),  INT32_C(  2076563581), -INT32_C(   555354921),  INT32_C(  2127508495), -INT32_C(  1067546619),  INT32_C(   313728341), -INT32_C(  1860826141),
         INT32_C(   780573392), -INT32_C(  2098852091), -INT32_C(  1090671641), -INT32_C(  1365450081),  INT32_C(   472673047),  INT32_C(  1222478835), -INT32_C(  1956999000),  INT32_C(  1813803420) },
      {  INT32_C(   295412235), -INT32_C(  1735163471), -INT32_C(   866676435), -INT32_C(  1971588237) },
      {  INT32_C(  1791536067),              INT32_MAX,  INT32_C(   768776232),  INT32_C(   779680539),              INT32_MIN, -INT32_C(  2027233448), -INT32_C(   317048214),              INT32_MAX,
         INT32_C(  1054350792),              INT32_MIN,              INT32_MIN, -INT32_C(  1128191890), -INT32_C(   378344816),  INT32_C(   863018185),              INT32_MIN,              INT32_MAX } },
    { {  INT32_C(  1386719071), -INT32_C(   610565070), -INT32_C(  1335429868),  INT32_C(  1914536806), -INT32_C(   679233499),  INT32_C(  1718556217),  INT32_C(   456378023),  INT32_C(   430288570),
        -INT32_C(  2006234027), -INT32_C(   446495024),  INT32_C(  1653983740),  INT32_C(  1926541900), -INT32_C(  1538697366),  INT32_C(   353024110),  INT32_C(   959462783),  INT32_C(  1095948011) },
      UINT16_C(48418),
      {  INT32_C(   751104969),  INT32_C(  1844822232), -INT32_C(   148880862), -INT32_C(    45184332),  INT32_C(   968211502),  INT32_C(    41301202), -INT32_C(  1076338067),  INT32_C(  1820195747),
        -INT32_C(   963100178),  INT32_C(   590580993), -INT32_C(  2095426609),  INT32_C(   209742302), -INT32_C(   146459099), -INT32_C(   654656406), -INT32_C(  1047014882), -INT32_C(  1154673459) },
      {  INT32_C(  1451345237),  INT32_C(   578467154), -INT32_C(   425356280),  INT32_C(   603137789), -INT32_C(   971360164),  INT32_C(   312349940), -INT32_C(  1261226265), -INT32_C(  1603272630),
         INT32_C(   418836933), -INT32_C(  1355124570),  INT32_C(    43376389),  INT32_C(  1629849605), -INT32_C(  1255653183),  INT32_C(  1003013716),  INT32_C(  1206950908),  INT32_C(  1642553500) },
      { -INT32_C(   126231215),  INT32_C(  1403499342), -INT32_C(  1739244397), -INT32_C(  2030404667),  INT32_C(   255533755), -INT32_C(   448068632),  INT32_C(   992754591), -INT32_C(   325315685),
         INT32_C(  1055135472),  INT32_C(  1553042377), -INT32_C(  1913264184),  INT32_C(   487845730), -INT32_C(   114536943), -INT32_C(   237078702),  INT32_C(  1294731954),  INT32_C(   238733341) },
      { -INT32_C(  1471406370),  INT32_C(  1912921770),  INT32_C(   671087045), -INT32_C(   112979224), -INT32_C(  1292668832), -INT32_C(  1700539928), -INT32_C(   102182948),  INT32_C(  1980179096),
        -INT32_C(   367111104), -INT32_C(   144956622),  INT32_C(    85875484), -INT32_C(   822189459), -INT32_C(  1165954606), -INT32_C(  1621809981), -INT32_C(  1952956941), -INT32_C(  1627217825) },
      {  INT32_C(   646586612),  INT32_C(  1612572227), -INT32_C(  1352320190),  INT32_C(  1870488477) },
      {  INT32_C(  1386719071), -INT32_C(  2082120393), -INT32_C(  1335429868),  INT32_C(  1914536806), -INT32_C(   679233499),              INT32_MAX,  INT32_C(   456378023),  INT32_C(   430288570),
                     INT32_MIN, -INT32_C(   446495024),              INT32_MAX,              INT32_MAX,              INT32_MIN,  INT32_C(  1713136378),  INT32_C(   959462783),  INT32_C(  1910468647) } },
    { {  INT32_C(   405470805),  INT32_C(   364347170),  INT32_C(   463556540), -INT32_C(   474307601),  INT32_C(   118047939),  INT32_C(  1835476523), -INT32_C(    31667103), -INT32_C(  2073126353),
        -INT32_C(  1164142440), -INT32_C(   741387497), -INT32_C(  1829867357), -INT32_C(   680089581),  INT32_C(   417234925),  INT32_C(   126174630),  INT32_C(  1074176273), -INT32_C(   742034373) },
      UINT16_C(24844),
      {  INT32_C(  1572152205), -INT32_C(   456304394),  INT32_C(  1619845610), -INT32_C(  1763673672),  INT32_C(   383485585), -INT32_C(  1816597363), -INT32_C(   251137236),  INT32_C(  1414730695),
         INT32_C(   749799478),  INT32_C(  1242595168),  INT32_C(   413900128), -INT32_C(  1464956138), -INT32_C(  1631680239), -INT32_C(  1590528395),  INT32_C(   831732074), -INT32_C(  2088376755) },
      {  INT32_C(  1320171502),  INT32_C(   379109558),  INT32_C(  1949188957), -INT32_C(   551756594), -INT32_C(   629220763), -INT32_C(  1149521839),  INT32_C(   921439977), -INT32_C(   491097612),
         INT32_C(  1580231336), -INT32_C(  2005612246), -INT32_C(   604200436), -INT32_C(   474343298),  INT32_C(  1136474354), -INT32_C(   755090968),  INT32_C(  1007217223),  INT32_C(    69124700) },
      {  INT32_C(  1466126124),  INT32_C(   618649368), -INT32_C(   117449862), -INT32_C(   438519053), -INT32_C(   618030606),  INT32_C(   447555538),  INT32_C(  1851176210), -INT32_C(  1536002952),
        -INT32_C(   604252733),  INT32_C(   654367405), -INT32_C(  1474297931), -INT32_C(  1399915591),  INT32_C(  1736947605), -INT32_C(   259967778),  INT32_C(  1633605609),  INT32_C(   252105036) },
      {  INT32_C(  1407910310), -INT32_C(  1854215204), -INT32_C(  1539663126),  INT32_C(   709937301),  INT32_C(  1569904511), -INT32_C(   196209909),  INT32_C(   928427243),  INT32_C(   608590973),
         INT32_C(   964112733),  INT32_C(   130806300),  INT32_C(   564856204),  INT32_C(  1280113613), -INT32_C(   576069934), -INT32_C(   590219279),  INT32_C(   554903460), -INT32_C(   515548541) },
      { -INT32_C(  1474642549),  INT32_C(  1001383343), -INT32_C(  1218684182),  INT32_C(   654551125) },
      {  INT32_C(   405470805),  INT32_C(   364347170),  INT32_C(  1929225411), -INT32_C(  1750122511),  INT32_C(   118047939),  INT32_C(  1835476523), -INT32_C(    31667103), -INT32_C(  2073126353),
                     INT32_MIN, -INT32_C(   741387497), -INT32_C(  1829867357), -INT32_C(   680089581),  INT32_C(   417234925),  INT32_C(   604096557),              INT32_MAX, -INT32_C(   742034373) } },
    { {  INT32_C(  2013572486),  INT32_C(  1213519268), -INT32_C(  2140509955),  INT32_C(  1298247618),  INT32_C(   469073004),  INT32_C(  1280746593),  INT32_C(  1392751614), -INT32_C(   495319205),
         INT32_C(  1482325684),  INT32_C(  1369550420), -INT32_C(   657388778),  INT32_C(   656815034),  INT32_C(   272767919), -INT32_C(  1101227584), -INT32_C(  1491967924),  INT32_C(   461999207) },
      UINT16_C(58123),
      {  INT32_C(   345137011), -INT32_C(  2128631632), -INT32_C(  1481319807),  INT32_C(  1136812801), -INT32_C(   790855052),  INT32_C(  1395664961),  INT32_C(  1507825616),  INT32_C(   641591986),
        -INT32_C(   113586359), -INT32_C(   126133641),  INT32_C(   899624756),  INT32_C(   125330067),  INT32_C(   634869220),  INT32_C(  1299712125),  INT32_C(  1386698911), -INT32_C(  1938234302) },
      {  INT32_C(   713405107),  INT32_C(  1076035596), -INT32_C(  1015692752),  INT32_C(   164294180), -INT32_C(  1070685885),  INT32_C(  1225697193),  INT32_C(  1100723711),  INT32_C(  1288508313),
        -INT32_C(   763997243), -INT32_C(  2095933101), -INT32_C(  2142861220), -INT32_C(  1182199690),  INT32_C(  1534703794),  INT32_C(  1587840863), -INT32_C(   710983876),  INT32_C(   404843858) },
      {  INT32_C(   334141632), -INT32_C(  1919419343), -INT32_C(    99689084), -INT32_C(  1598842898), -INT32_C(  1359270577), -INT32_C(   250830668),  INT32_C(   851881183), -INT32_C(   649402343),
        -INT32_C(  1309920128), -INT32_C(  1254128848),  INT32_C(  1336888673),  INT32_C(   888103908),  INT32_C(  1155721872),  INT32_C(  1781919626), -INT32_C(  1264780133),  INT32_C(  1687021284) },
      {  INT32_C(  1242921242),  INT32_C(  1593791741), -INT32_C(  2035437663), -INT32_C(  1564828654),  INT32_C(   300326022),  INT32_C(   645602443), -INT32_C(    52816104),  INT32_C(   392194045),
        -INT32_C(   564038175),  INT32_C(  1799119306),  INT32_C(   586279184),  INT32_C(   197438341), -INT32_C(   753096120), -INT32_C(   554002490), -INT32_C(  1411722066),  INT32_C(   499268156) },
      {  INT32_C(  2063279280), -INT32_C(  1780140155), -INT32_C(  1514678496), -INT32_C(   894403710) },
      {              INT32_MAX,              INT32_MAX, -INT32_C(  2140509955),              INT32_MAX,  INT32_C(   469073004),  INT32_C(  1280746593),  INT32_C(  1392751614), -INT32_C(   495319205),
                     INT32_MAX,              INT32_MAX, -INT32_C(   657388778),  INT32_C(   656815034),  INT32_C(   272767919),              INT32_MIN,              INT32_MIN,  INT32_C(   919834342) } },
    { { -INT32_C(   325137115),  INT32_C(   332044388), -INT32_C(  1463900820), -INT32_C(  1882881569),  INT32_C(   705282213),  INT32_C(   398454775),  INT32_C(  1220310726),  INT32_C(   370372081),
        -INT32_C(  1643990726), -INT32_C(  1246638775),  INT32_C(  1365143666), -INT32_C(  1763630095), -INT32_C(   608113948), -INT32_C(  1611431975), -INT32_C(   420958219),  INT32_C(  1459419932) },
      UINT16_C(65452),
      { -INT32_C(  1496517131),  INT32_C(   135675562),  INT32_C(  1881933711),  INT32_C(  1566249117), -INT32_C(   555993877), -INT32_C(  1131490860), -INT32_C(  1263031625), -INT32_C(   156015871),
         INT32_C(    43810648),  INT32_C(  1275835325),  INT32_C(  1488795578),  INT32_C(   850729031),  INT32_C(   538022476),  INT32_C(   467443555),  INT32_C(  1255117641),  INT32_C(  1312850678) },
      { -INT32_C(  1101931263),  INT32_C(  1242193040), -INT32_C(   626866285),  INT32_C(   739006687),  INT32_C(  1296834026),  INT32_C(   107489724), -INT32_C(  1286588484), -INT32_C(  1174302279),
        -INT32_C(    25669010),  INT32_C(  1095271342),  INT32_C(   706472778),  INT32_C(   760621123),  INT32_C(    41591365), -INT32_C(  2012683317), -INT32_C(   734308326),  INT32_C(  1468939497) },
      {  INT32_C(  1028982671), -INT32_C(   729833846), -INT32_C(   855729527),  INT32_C(   150557890), -INT32_C(  1039502345),  INT32_C(  1900679766),  INT32_C(  1413842282),  INT32_C(  1370215362),
         INT32_C(  1687028186),  INT32_C(   674827679),  INT32_C(  1794389928), -INT32_C(  2089620084), -INT32_C(  1220182944), -INT32_C(   114782066), -INT32_C(   682791659),  INT32_C(   455669824) },
      { -INT32_C(  1736460295),  INT32_C(  1824569540),  INT32_C(  2094511344),  INT32_C(    50284961),  INT32_C(  1421427910), -INT32_C(   363994668), -INT32_C(  1899914674), -INT32_C(  1935021421),
         INT32_C(  1696934305), -INT32_C(   774707743),  INT32_C(   994945434), -INT32_C(  1203942158),  INT32_C(  1695413905),  INT32_C(   625957591), -INT32_C(  2001464843), -INT32_C(  1676386821) },
      {  INT32_C(  1744910726), -INT32_C(  1187392737),  INT32_C(  1878296444),  INT32_C(  1680290515) },
      { -INT32_C(   325137115),  INT32_C(   332044388),              INT32_MIN,              INT32_MIN,  INT32_C(   705282213),  INT32_C(  1251043317),  INT32_C(  1220310726),  INT32_C(  1689447640),
                     INT32_MIN,              INT32_MIN,              INT32_MAX,              INT32_MIN, -INT32_C(  2123763870),              INT32_MIN,              INT32_MIN,              INT32_MAX } },
    { {  INT32_C(    13251624), -INT32_C(  2077943409),  INT32_C(   621599018), -INT32_C(  1111416777),  INT32_C(  2032517978),  INT32_C(   322068374), -INT32_C(  1182652698), -INT32_C(  2128697000),
         INT32_C(  1837230302),  INT32_C(   754034177), -INT32_C(  1219363456),  INT32_C(  2004095773),  INT32_C(  1827707606), -INT32_C(   545316103), -INT32_C(  1583873719), -INT32_C(  1994213717) },
      UINT16_C(41886),
      { -INT32_C(   414539530),  INT32_C(   501533388), -INT32_C(   181403263),  INT32_C(  1770980985), -INT32_C(   225671053),  INT32_C(    16045415), -INT32_C(  1716084874),  INT32_C(   507270440),
        -INT32_C(  1056602379), -INT32_C(   773920432),  INT32_C(  1673990122), -INT32_C(  1999809003),  INT32_C(  1182489055), -INT32_C(  1538887890),  INT32_C(   910032142),  INT32_C(  1196718674) },
      {  INT32_C(  1359501568),  INT32_C(   740484674),  INT32_C(   194046453),  INT32_C(   529751360), -INT32_C(   463139146), -INT32_C(  1953977219), -INT32_C(    71186775),  INT32_C(  1078072640),
        -INT32_C(  1332655506),  INT32_C(   652063792), -INT32_C(   583963235), -INT32_C(  2130918198),  INT32_C(  1348756179), -INT32_C(  1210258418), -INT32_C(   223175246),  INT32_C(   557053107) },
      {  INT32_C(  1859306558),  INT32_C(   378843000), -INT32_C(   420231908),  INT32_C(  1567027338),  INT32_C(  1622002258),  INT32_C(  1763150262), -INT32_C(   631518937), -INT32_C(    67400003),
        -INT32_C(   882258605), -INT32_C(  1730019716),  INT32_C(  1300157891),  INT32_C(   397075653),  INT32_C(  1702320302),  INT32_C(   147754721),  INT32_C(   350366039),  INT32_C(   185589432) },
      {  INT32_C(   685144235),  INT32_C(   985708662),  INT32_C(  1384595341), -INT32_C(   764857821),  INT32_C(  1798824074), -INT32_C(   982252178), -INT32_C(   421964242), -INT32_C(   521017292),
        -INT32_C(   687290272),  INT32_C(   219269248),  INT32_C(   727685127),  INT32_C(  1425918154),  INT32_C(   381695144),  INT32_C(  1742419001), -INT32_C(  1085361014), -INT32_C(    56672356) },
      { -INT32_C(  2016172281),  INT32_C(  2006246511),  INT32_C(  1201861501),  INT32_C(  1671208891) },
      {  INT32_C(    13251624),              INT32_MIN,              INT32_MAX,              INT32_MIN,              INT32_MAX,  INT32_C(   322068374), -INT32_C(  1182652698),              INT32_MIN,
                     INT32_MAX,              INT32_MAX, -INT32_C(  1219363456),  INT32_C(  2004095773),  INT32_C(  1827707606),              INT32_MIN, -INT32_C(  1583873719),              INT32_MIN } },
    { {  INT32_C(   209280211),  INT32_C(   443765904), -INT32_C(  1529233144),  INT32_C(   144799745), -INT32_C(  1886358497), -INT32_C(   704240551), -INT32_C(   753031144),  INT32_C(   439859527),
        -INT32_C(  1524191211),  INT32_C(   230725893),  INT32_C(  1555208539),  INT32_C(   828658450),  INT32_C(   549516487),  INT32_C(   838256153), -INT32_C(  1258023826), -INT32_C(   472958003) },
      UINT16_C(62956),
      {  INT32_C(  1217393032), -INT32_C(  1327305986), -INT32_C(  1442581434), -INT32_C(   425735387), -INT32_C(   491996949), -INT32_C(   302638103), -INT32_C(  1607875632),  INT32_C(   798299558),
         INT32_C(    74916870),  INT32_C(  1421170958),  INT32_C(  1946138701),  INT32_C(  1868144259),  INT32_C(  1062274390), -INT32_C(   248756448), -INT32_C(  1315875574),  INT32_C(  1893738090) },
      {  INT32_C(  1500862283), -INT32_C(    22140239),  INT32_C(  1718726114), -INT32_C(  1579824565), -INT32_C(   253745456),  INT32_C(  2011237485), -INT32_C(   869764510), -INT32_C(   465762151),
         INT32_C(   289256032), -INT32_C(  1106252836), -INT32_C(   484146792),  INT32_C(   461699403), -INT32_C(  1945344993), -INT32_C(   754651791), -INT32_C(   107008928), -INT32_C(  1780622283) },
      {  INT32_C(  1789270670), -INT32_C(  1641433850), -INT32_C(  2105389770),  INT32_C(  1721566791), -INT32_C(   588011157), -INT32_C(   139462761),  INT32_C(  1492143651), -INT32_C(  1175597781),
        -INT32_C(   316369945),  INT32_C(  2139901257), -INT32_C(   520024422),  INT32_C(  2135465748), -INT32_C(   547669176),  INT32_C(  1440090674), -INT32_C(  2068920743),  INT32_C(  2067635091) },
      {  INT32_C(  2020106543),  INT32_C(  1240986798),  INT32_C(   388692226), -INT32_C(   527011176), -INT32_C(   541003091),  INT32_C(  1429575420), -INT32_C(   254155939), -INT32_C(  1385490562),
         INT32_C(   656790648), -INT32_C(   881844792), -INT32_C(  1360881130), -INT32_C(  1165068275),  INT32_C(  1738165866),  INT32_C(  1119670245),  INT32_C(   808621746),  INT32_C(   635346605) },
      {  INT32_C(   978060146),  INT32_C(   906345504),  INT32_C(  1692723031), -INT32_C(   903974048) },
      {  INT32_C(   209280211),  INT32_C(   443765904),              INT32_MIN,  INT32_C(  2021560516), -INT32_C(  1886358497),              INT32_MIN,              INT32_MIN,  INT32_C(  1897659152),
                     INT32_MIN,  INT32_C(   230725893),              INT32_MAX,  INT32_C(   828658450),  INT32_C(  1500720096),              INT32_MAX,              INT32_MIN, -INT32_C(  1560905978) } },
    { { -INT32_C(  1506690879),  INT32_C(   971566727),  INT32_C(   829037444),  INT32_C(   727075001),  INT32_C(  1818600267), -INT32_C(  1230869665), -INT32_C(  1306884270), -INT32_C(  1149421062),
         INT32_C(  2036510449),  INT32_C(   548555420),  INT32_C(   508632165), -INT32_C(  1337350044), -INT32_C(  1440960693),  INT32_C(  1818344986),  INT32_C(  1059027781), -INT32_C(  1493459788) },
      UINT16_C(23882),
      { -INT32_C(   777525473),  INT32_C(  1508773127),  INT32_C(  1963020843),  INT32_C(   505695234),  INT32_C(  1474117366), -INT32_C(   908909910),  INT32_C(  1566934882),  INT32_C(  1287303213),
        -INT32_C(  1642176105), -INT32_C(  1695085458),  INT32_C(  1628436574),  INT32_C(   998191940),  INT32_C(   462576753), -INT32_C(   505059969),  INT32_C(   440290029), -INT32_C(  1855457030) },
      { -INT32_C(   936344231), -INT32_C(   278780015),  INT32_C(  1682993440),  INT32_C(   362795172), -INT32_C(  1422904788), -INT32_C(  2071194217),  INT32_C(  1520421472),  INT32_C(   485230274),
         INT32_C(   484711563),  INT32_C(  1661683267),  INT32_C(  1539857591),  INT32_C(  1483761452),  INT32_C(   822386841),  INT32_C(   380997814),  INT32_C(   493900891), -INT32_C(   449225638) },
      { -INT32_C(  1140777608),  INT32_C(   438242659), -INT32_C(  1787435159), -INT32_C(   387062449),  INT32_C(  1008333190), -INT32_C(   581775486),  INT32_C(  2130362915), -INT32_C(  1755106273),
        -INT32_C(  1252825775), -INT32_C(   607161486), -INT32_C(  1452260006), -INT32_C(  1332585174), -INT32_C(   773018801), -INT32_C(  1632747910),  INT32_C(   538748929),  INT32_C(   783777756) },
      {  INT32_C(  1457720292), -INT32_C(   667831682),  INT32_C(   578986487),  INT32_C(  1322390783),  INT32_C(   975159231), -INT32_C(    19345923),  INT32_C(  1377760373),  INT32_C(  1484838515),
         INT32_C(  1605264353),  INT32_C(   221765653), -INT32_C(  2144355967), -INT32_C(  1915878963), -INT32_C(  1094193728),  INT32_C(   817668026),  INT32_C(   109239187), -INT32_C(  1839332687) },
      {  INT32_C(  2062617957),  INT32_C(  1854351597), -INT32_C(  1343244574),  INT32_C(  2017246648) },
      { -INT32_C(  1506690879),              INT32_MAX,  INT32_C(   829037444),              INT32_MAX,  INT32_C(  1818600267), -INT32_C(  1230869665),              INT32_MIN, -INT32_C(  1149421062),
                     INT32_MAX,  INT32_C(   548555420),  INT32_C(  1955184928),              INT32_MIN,              INT32_MIN,  INT32_C(  1818344986),              INT32_MAX, -INT32_C(  1493459788) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m512i src = simde_mm512_loadu_epi32(test_vec[i].src);
    simde__m512i a0 = simde_mm512_loadu_epi32(test_vec[i].a0);
    simde__m512i a1 = simde_mm512_loadu_epi32(test_vec[i].a1);
    simde__m512i a2 = simde_mm512_loadu_epi32(test_vec[i].a2);
    simde__m512i a3 = simde_mm512_loadu_epi32(test_vec[i].a3);
    simde__m128i b = simde_x_mm_loadu_epi32(test_vec[i].b);
    simde__m512i r = simde_mm512_mask_4dpwssds_epi32(src, test_vec[i].k, a0, a1, a2, a3, &b);
    simde_test_x86_assert_equal_i32x16(r, simde_mm512_loadu_epi32(test_vec[i].r));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__m512i src = simde_test_x86_random_i32x16();
    simde__mmask16 k = simde_test_x86_random_mmask16();
    simde__m512i a0 = simde_test_x86_random_i32x16();
    simde__m512i a1 = simde_test_x86_random_i32x16();
    simde__m512i a2 = simde_test_x86_random_i32x16();
    simde__m512i a3 = simde_test_x86_random_i32x16();
    simde__m128i b = simde_test_x86_random_i32x4();
    simde__m512i r = simde_mm512_mask_4dpwssds_epi32(src, k, a0, a1, a2, a3, &b);

    simde_test_x86_write_i32x16(2, src, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_mmask16(2, k, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i32x16(2, a0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i32x16(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i32x16(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i32x16(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i32x16(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

static int
test_simde_mm512_maskz_4dpwssds_epi32 (SIMDE_MUNIT_TEST_ARGS) {
#if 1
  static const struct {
    const simde__mmask16 k;
    const int32_t src[16];
    const int32_t a0[16];
    const int32_t a1[16];
    const int32_t a2[16];
    const int32_t a3[16];
    const int32_t b[4];
    const int32_t r[16];
  } test_vec[] = {
    { UINT16_C(  939),
      { -INT32_C(   207461066),  INT32_C(   399390101), -INT32_C(  1709605060),  INT32_C(    44531217), -INT32_C(  2144692999), -INT32_C(   231273469), -INT32_C(   122687556), -INT32_C(  1627628953),
         INT32_C(  1435606720),  INT32_C(   275603412), -INT32_C(   274037026), -INT32_C(    17739259), -INT32_C(   377611290), -INT32_C(   455363288),  INT32_C(   215780260), -INT32_C(  1515530011) },
      {  INT32_C(  1274755959),  INT32_C(  2019256474), -INT32_C(   211352082),  INT32_C(  1056004183), -INT32_C(  1691914125), -INT32_C(   897645787),  INT32_C(  1943428238), -INT32_C(  1424392140),
         INT32_C(  1442190523),  INT32_C(  1791840636), -INT32_C(  1369557929), -INT32_C(     1290356), -INT32_C(   442821441), -INT32_C(  1515251177), -INT32_C(  1424456330), -INT32_C(  1068093179) },
      { -INT32_C(  1055568571), -INT32_C(   181607778), -INT32_C(  1566275050), -INT32_C(  1717464871), -INT32_C(  1149354844), -INT32_C(   849334953), -INT32_C(  1216841294), -INT32_C(   260583510),
        -INT32_C(  1162769380), -INT32_C(  2068783762),  INT32_C(  1093031015), -INT32_C(  1982150684),  INT32_C(  1531205636),  INT32_C(   925410693), -INT32_C(   923885282), -INT32_C(  1934072464) },
      {  INT32_C(  1598450417), -INT32_C(  1344014777),  INT32_C(   804260170), -INT32_C(   726086960), -INT32_C(  1490027486), -INT32_C(  1075947359),  INT32_C(  1770573049),  INT32_C(   586498097),
        -INT32_C(   226411606),  INT32_C(  2090951730),  INT32_C(  1034654061),  INT32_C(  2098357083),  INT32_C(    19153248), -INT32_C(  1832844647), -INT32_C(      308786),  INT32_C(   874639497) },
      {  INT32_C(  1579590188),  INT32_C(  1943717638), -INT32_C(  1280276904),  INT32_C(  1227932393), -INT32_C(  1656007676),  INT32_C(   607128662), -INT32_C(   568120491),  INT32_C(  1209156636),
        -INT32_C(   324650778),  INT32_C(  1465876735), -INT32_C(   267776250), -INT32_C(   700892462), -INT32_C(   462191474), -INT32_C(   452418672), -INT32_C(   339465265),  INT32_C(  1429460591) },
      {  INT32_C(   239196431),  INT32_C(  1617338457), -INT32_C(  2108657488),  INT32_C(   962103723) },
      { -INT32_C(   706037269),              INT32_MAX,  INT32_C(           0),  INT32_C(   774025928),  INT32_C(           0), -INT32_C(   364018697),  INT32_C(           0),              INT32_MIN,
                     INT32_MAX,  INT32_C(  1458542252),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0) } },
    { UINT16_C(51982),
      {  INT32_C(   644849182),  INT32_C(  1213349508),  INT32_C(  1545519401),  INT32_C(  1479879959), -INT32_C(  1560703428),  INT32_C(  1041410542), -INT32_C(  2083996373),  INT32_C(   357488375),
        -INT32_C(   130302604),  INT32_C(   608210427),  INT32_C(  1719689039), -INT32_C(   927025780),  INT32_C(   845854532), -INT32_C(  1955496608),  INT32_C(   823015738), -INT32_C(  2092540657) },
      {  INT32_C(   377258522),  INT32_C(  1580907535), -INT32_C(  1463502053), -INT32_C(  1267694736), -INT32_C(  1679303878), -INT32_C(  1842980776), -INT32_C(  1597753967), -INT32_C(  1406989678),
        -INT32_C(  1664966772),  INT32_C(  2012937564),  INT32_C(   673169336),  INT32_C(  2094895170), -INT32_C(  1021852565), -INT32_C(  1386922468),  INT32_C(    88938867), -INT32_C(  1330548700) },
      {  INT32_C(  1816949776),  INT32_C(   702760817),  INT32_C(  1213268742), -INT32_C(    20697453),  INT32_C(   247586034), -INT32_C(  1917118950),  INT32_C(  1418856496), -INT32_C(  1996209287),
         INT32_C(   687165879), -INT32_C(  1638803304),  INT32_C(  1860608987), -INT32_C(   999511343), -INT32_C(  1596838522),  INT32_C(  1949142596),  INT32_C(   264814486), -INT32_C(  1164391421) },
      { -INT32_C(  1243378403),  INT32_C(  1095971942), -INT32_C(  1448068649),  INT32_C(  1785535716), -INT32_C(  1911865526),  INT32_C(  1677867213), -INT32_C(    76297480), -INT32_C(  1263203178),
        -INT32_C(     9856871), -INT32_C(  1539195443), -INT32_C(   632425994),  INT32_C(  1464187405), -INT32_C(   941272838), -INT32_C(  2144606328),  INT32_C(  1216061361),  INT32_C(  1157378475) },
      { -INT32_C(  1773902391),  INT32_C(   423331106), -INT32_C(  2081191818),  INT32_C(  1037776963),  INT32_C(   285524104),  INT32_C(  1502687400),  INT32_C(  2057375183),  INT32_C(   129932606),
         INT32_C(   631112195), -INT32_C(    46212729), -INT32_C(  1535036831), -INT32_C(   203334550), -INT32_C(  1006311908), -INT32_C(   450980586), -INT32_C(   530595934),  INT32_C(  1625824605) },
      { -INT32_C(  1484421600), -INT32_C(  1062878113),  INT32_C(  1617241846), -INT32_C(  1638709630) },
      {  INT32_C(           0),              INT32_MAX,              INT32_MAX,              INT32_MAX,  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
        -INT32_C(   163983841),  INT32_C(  1409072950),  INT32_C(           0), -INT32_C(  2082057238),  INT32_C(           0),  INT32_C(           0),              INT32_MAX,              INT32_MIN } },
    { UINT16_C(22316),
      { -INT32_C(  2115157405), -INT32_C(  2042589401),  INT32_C(  1487183216), -INT32_C(  2082552579),  INT32_C(   273104235),  INT32_C(  1647721981), -INT32_C(   240535395), -INT32_C(  1169631913),
         INT32_C(  1060844824),  INT32_C(   902200261),  INT32_C(   378366489), -INT32_C(  1717998802), -INT32_C(  1515528024), -INT32_C(  1157046243), -INT32_C(   257117799), -INT32_C(  1632963450) },
      { -INT32_C(   270605014),  INT32_C(  2032444512),  INT32_C(  1016115470), -INT32_C(   992663268),  INT32_C(   661225226), -INT32_C(   102600352), -INT32_C(  1444311518), -INT32_C(  1387818109),
        -INT32_C(   660855432), -INT32_C(   682442551), -INT32_C(  1928076687),  INT32_C(   357689611), -INT32_C(   935478680),  INT32_C(  1321279276),  INT32_C(   838314670), -INT32_C(  1243726019) },
      {  INT32_C(   781089380), -INT32_C(  1425678278), -INT32_C(   851961406),  INT32_C(  1793296642),  INT32_C(  1865621571), -INT32_C(   306252737), -INT32_C(   601967201),  INT32_C(  1502805236),
        -INT32_C(  1333321610), -INT32_C(  1034187776), -INT32_C(  1483762779),  INT32_C(  1611821596), -INT32_C(   758168174), -INT32_C(   658535111),  INT32_C(   934665795),  INT32_C(  1368410074) },
      {  INT32_C(  1728124775),  INT32_C(  1227447716),  INT32_C(   233945328), -INT32_C(  1116929237), -INT32_C(  2121319352),  INT32_C(   224022474),  INT32_C(   121900845), -INT32_C(  1118251690),
        -INT32_C(  1876665620), -INT32_C(  1478865481),  INT32_C(   817154821),  INT32_C(   384704974),  INT32_C(   681016670), -INT32_C(   113905204),  INT32_C(  1442937088),  INT32_C(   991123790) },
      {  INT32_C(  1791702963), -INT32_C(  1978489468),  INT32_C(  1052427888),  INT32_C(  1179953384), -INT32_C(   227611610), -INT32_C(   554916899),  INT32_C(  1798630684), -INT32_C(    89765818),
         INT32_C(    73691519), -INT32_C(  2020706793),  INT32_C(   633751613),  INT32_C(   392895217), -INT32_C(   469116666), -INT32_C(  1732053636),  INT32_C(   688125666), -INT32_C(  1104959170) },
      {  INT32_C(   851609371),  INT32_C(  1002000638), -INT32_C(  1990164584), -INT32_C(  1600074854) },
      {  INT32_C(           0),  INT32_C(           0),              INT32_MAX,              INT32_MIN,  INT32_C(           0),              INT32_MAX,  INT32_C(           0),  INT32_C(           0),
                     INT32_MAX,              INT32_MAX, -INT32_C(   861755988),  INT32_C(           0),              INT32_MIN,  INT32_C(           0), -INT32_C(    29167513),  INT32_C(           0) } },
    { UINT16_C(43684),
      {  INT32_C(  1184833668), -INT32_C(  1136819528), -INT32_C(   832210005), -INT32_C(    78282695),  INT32_C(  1816875954), -INT32_C(   286530418),  INT32_C(   247039341), -INT32_C(  1430758106),
         INT32_C(   921786237), -INT32_C(  2064503079), -INT32_C(   481142871), -INT32_C(  1965119272), -INT32_C(  1963578629),  INT32_C(  2071519758), -INT32_C(  1920388505),  INT32_C(   221790607) },
      {  INT32_C(  1917004185),  INT32_C(    16201047),  INT32_C(  1692617100), -INT32_C(   303054095), -INT32_C(    92805652),  INT32_C(   796258247), -INT32_C(  1313013983), -INT32_C(   641797056),
         INT32_C(  1951138077), -INT32_C(  1032502474),  INT32_C(  2116507788),  INT32_C(   107681306), -INT32_C(  1023352069), -INT32_C(   202213679), -INT32_C(  1247498635), -INT32_C(  1064344925) },
      { -INT32_C(  1724523677), -INT32_C(  1436833250),  INT32_C(   489193986), -INT32_C(  1809607784),  INT32_C(  1196893301),  INT32_C(   255478170), -INT32_C(  1698373897), -INT32_C(  1554296000),
         INT32_C(  1279037486),  INT32_C(  1022859066), -INT32_C(  1302782182),  INT32_C(   675708339),  INT32_C(   997170593), -INT32_C(   565532186), -INT32_C(   948433273), -INT32_C(  1872047262) },
      { -INT32_C(  1646418333),  INT32_C(  1490736190), -INT32_C(  1509280781),  INT32_C(  1372541360), -INT32_C(   712229138),  INT32_C(  1874056936),  INT32_C(  1194798053),  INT32_C(  1658298879),
        -INT32_C(  2046774200),  INT32_C(  2094979720), -INT32_C(  1105008627),  INT32_C(   672133433),  INT32_C(   419273776),  INT32_C(  1468510322), -INT32_C(   627130661), -INT32_C(  1472367008) },
      { -INT32_C(  1288815318),  INT32_C(   607063063),  INT32_C(   786584052),  INT32_C(  1935077955),  INT32_C(     9130894), -INT32_C(   564653565),  INT32_C(   834270929), -INT32_C(  1747323284),
         INT32_C(  1246365491),  INT32_C(   124680467),  INT32_C(   221598154), -INT32_C(   780104893), -INT32_C(   506393634), -INT32_C(   272619234), -INT32_C(  1944028896), -INT32_C(  1574700689) },
      {  INT32_C(   334261504), -INT32_C(  1323672858), -INT32_C(   289517397), -INT32_C(  1161871397) },
      {  INT32_C(           0),  INT32_C(           0),              INT32_MIN,  INT32_C(           0),  INT32_C(           0), -INT32_C(   955777697),  INT32_C(           0),              INT32_MIN,
         INT32_C(           0),              INT32_MIN,  INT32_C(           0),              INT32_MIN,  INT32_C(           0),              INT32_MAX,  INT32_C(           0),              INT32_MAX } },
    { UINT16_C(37194),
      {  INT32_C(  1538943131),  INT32_C(  2010438231), -INT32_C(  1972354201), -INT32_C(   772247323), -INT32_C(  1641226621),  INT32_C(  1324275599), -INT32_C(  2054305338),  INT32_C(   521590659),
        -INT32_C(  1753558720),  INT32_C(   302993323),  INT32_C(  2023587730),  INT32_C(  1934202352),  INT32_C(    51475827),  INT32_C(   324140877),  INT32_C(  1285086921), -INT32_C(   177492043) },
      {  INT32_C(   730719872), -INT32_C(   952198091),  INT32_C(   188734235), -INT32_C(   478181008),  INT32_C(  1273401598),  INT32_C(  1499346832), -INT32_C(   878315755),  INT32_C(   650121638),
         INT32_C(   743525879),  INT32_C(    99848169), -INT32_C(   636472470), -INT32_C(  1161916484), -INT32_C(  1341742048), -INT32_C(   251042596),  INT32_C(    29142619), -INT32_C(  1238925889) },
      { -INT32_C(  1260226102),  INT32_C(  1941558792), -INT32_C(   984758007),  INT32_C(  2038369113), -INT32_C(  1943435856),  INT32_C(  1165832938), -INT32_C(  1605944608), -INT32_C(  2125041993),
        -INT32_C(   264947225),  INT32_C(   409202191),  INT32_C(   299741368),  INT32_C(  1821007036), -INT32_C(   856116254), -INT32_C(   988711451),  INT32_C(  1717917871), -INT32_C(  1360479033) },
      {  INT32_C(    77471221), -INT32_C(  1004797684),  INT32_C(  1859516850),  INT32_C(   937058133), -INT32_C(   150744558), -INT32_C(   138668729),  INT32_C(   878518893), -INT32_C(   740080162),
         INT32_C(  1876394339),  INT32_C(   892597123),  INT32_C(  1101203692),  INT32_C(  2038005095), -INT32_C(  1771013041), -INT32_C(     7525231),  INT32_C(   741600078), -INT32_C(  1811999184) },
      {  INT32_C(   453170840), -INT32_C(  1253034551), -INT32_C(  1527254211), -INT32_C(  1088589712),  INT32_C(  2119536108),  INT32_C(   142468026), -INT32_C(    30035762),  INT32_C(  1603417287),
        -INT32_C(   730164213),  INT32_C(   126536394),  INT32_C(   766280125), -INT32_C(   571684367),  INT32_C(   291193175), -INT32_C(   233187292),  INT32_C(  1357991561), -INT32_C(  1901100157) },
      { -INT32_C(   513660649), -INT32_C(  1326846733),  INT32_C(  1591580013), -INT32_C(  1254307490) },
      {  INT32_C(           0),              INT32_MAX,  INT32_C(           0),              INT32_MIN,  INT32_C(           0),  INT32_C(           0),              INT32_MIN,  INT32_C(           0),
                     INT32_MIN,  INT32_C(           0),  INT32_C(           0),  INT32_C(           0), -INT32_C(  1364975921),  INT32_C(           0),  INT32_C(           0),  INT32_C(   455611049) } },
    { UINT16_C(38666),
      { -INT32_C(   529518650),  INT32_C(   305068321), -INT32_C(   124407479), -INT32_C(  1574851265),  INT32_C(  2005800078), -INT32_C(  1592984380), -INT32_C(  1771410598), -INT32_C(   416386016),
        -INT32_C(   976773469), -INT32_C(   522717801), -INT32_C(   422023769), -INT32_C(  1467418342), -INT32_C(   786426099),  INT32_C(  1836198931), -INT32_C(  1207640937), -INT32_C(   190893488) },
      {  INT32_C(  1740203728),  INT32_C(    38244443),  INT32_C(   401154045),  INT32_C(   633368856), -INT32_C(  1678319480), -INT32_C(  1542887412), -INT32_C(  1805906620),  INT32_C(   260635455),
        -INT32_C(  1133100703), -INT32_C(   809517614), -INT32_C(   186144548), -INT32_C(  1575377127), -INT32_C(  1824714873), -INT32_C(  1154005385), -INT32_C(  1840278701), -INT32_C(   274605938) },
      { -INT32_C(   341043431), -INT32_C(  1329894444),  INT32_C(   748986899), -INT32_C(   791757495),  INT32_C(  1130564812), -INT32_C(  1493263534), -INT32_C(  1120383442),  INT32_C(  1068292646),
        -INT32_C(   970237711), -INT32_C(   696850749), -INT32_C(   788325496), -INT32_C(  1516121640),  INT32_C(   820511965), -INT32_C(   824776801),  INT32_C(  1535839797), -INT32_C(   627427352) },
      {  INT32_C(  1403045264),  INT32_C(   858396331),  INT32_C(   168045873), -INT32_C(   592468482),  INT32_C(  1225562026), -INT32_C(  1290280322), -INT32_C(   653352208),  INT32_C(  1790159322),
         INT32_C(   448615278), -INT32_C(  1689393303),  INT32_C(   329601556), -INT32_C(  1578150665),  INT32_C(  1793850347), -INT32_C(   853736739),  INT32_C(  2141596837),  INT32_C(  1139366357) },
      {  INT32_C(   375236268), -INT32_C(  1565414514), -INT32_C(   189442307), -INT32_C(  1785289558),  INT32_C(  2097119647),  INT32_C(   675945859),  INT32_C(   514322505), -INT32_C(   161378230),
        -INT32_C(   989020361),  INT32_C(  1734851946), -INT32_C(  1118102253),  INT32_C(  1632891329), -INT32_C(   153267598), -INT32_C(  1205983377),  INT32_C(  1658242584), -INT32_C(  1923598250) },
      {  INT32_C(  1632790007),  INT32_C(   919124514), -INT32_C(  1728896041), -INT32_C(  2013706731) },
      {  INT32_C(           0), -INT32_C(   235734375),  INT32_C(           0),              INT32_MIN,  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),
                     INT32_MIN,              INT32_MIN, -INT32_C(  1911739207),  INT32_C(           0),              INT32_MIN,  INT32_C(           0),  INT32_C(           0), -INT32_C(   608819032) } },
    { UINT16_C(55193),
      { -INT32_C(  1661073283), -INT32_C(  1755179327), -INT32_C(   774915976), -INT32_C(  1741240762), -INT32_C(   279816153), -INT32_C(  2112673394), -INT32_C(  1144510270),  INT32_C(   764567983),
         INT32_C(   734630250),  INT32_C(   549596071),  INT32_C(   703697635), -INT32_C(  2134759592),  INT32_C(   242160767),  INT32_C(     9470526),  INT32_C(  1522227370),  INT32_C(   612847290) },
      { -INT32_C(  2041622305),  INT32_C(  1587941755), -INT32_C(    58157149),  INT32_C(  1048332990), -INT32_C(  1672680610),  INT32_C(   412933230), -INT32_C(   294496204), -INT32_C(  2062354010),
        -INT32_C(  1005887159),  INT32_C(   371438195),  INT32_C(   135441225),  INT32_C(  1397133045), -INT32_C(   386887046), -INT32_C(  1577022354), -INT32_C(  1970179100), -INT32_C(  1240489108) },
      {  INT32_C(  2021268229),  INT32_C(   378445261),  INT32_C(  1025417544), -INT32_C(  1450089425),  INT32_C(  1687257590), -INT32_C(   234384883),  INT32_C(  1903990789),  INT32_C(  1076333627),
         INT32_C(  1958257319), -INT32_C(  2004203713),  INT32_C(   398830056),  INT32_C(    79779341), -INT32_C(   446147881), -INT32_C(   371757084),  INT32_C(  1130058503), -INT32_C(  2038201633) },
      {  INT32_C(  1694120996),  INT32_C(  1810662787),  INT32_C(   998420782), -INT32_C(   549502200),  INT32_C(  2059708566),  INT32_C(   526686999), -INT32_C(   832389137),  INT32_C(  1716905281),
        -INT32_C(  1530245343),  INT32_C(    34584276),  INT32_C(  1866371687),  INT32_C(  1800371669),  INT32_C(  1038488357), -INT32_C(  1638118737),  INT32_C(  1248640521), -INT32_C(   978271837) },
      { -INT32_C(   446072303), -INT32_C(  1729595088), -INT32_C(   536402421), -INT32_C(   917743965),  INT32_C(   419836522), -INT32_C(  2051579268), -INT32_C(  1009835232), -INT32_C(   158826267),
         INT32_C(   735834874),  INT32_C(  1992541035), -INT32_C(  1923691799), -INT32_C(  1957256671),  INT32_C(  1352948948), -INT32_C(   556442690),  INT32_C(  1671538046),  INT32_C(   525937189) },
      { -INT32_C(  2025179876), -INT32_C(   486732296), -INT32_C(   110144552), -INT32_C(   897268234) },
      {              INT32_MIN,  INT32_C(           0),  INT32_C(           0),              INT32_MIN, -INT32_C(  1521547527),  INT32_C(           0),  INT32_C(           0),              INT32_MAX,
                     INT32_MAX,  INT32_C(  1456901751),              INT32_MAX,  INT32_C(           0),  INT32_C(   339097854),  INT32_C(           0),              INT32_MAX,              INT32_MAX } },
    { UINT16_C(10273),
      { -INT32_C(   259793125),  INT32_C(  1586823613), -INT32_C(  1098335643),  INT32_C(   619947226),  INT32_C(   674425899),  INT32_C(  1031539406), -INT32_C(  2029882877),  INT32_C(  1471095612),
        -INT32_C(  1085787646), -INT32_C(  1742873293),  INT32_C(  1918346904),  INT32_C(  1989560906),  INT32_C(    77514806), -INT32_C(   717153582), -INT32_C(   916700276),  INT32_C(  1746930534) },
      {  INT32_C(  1898407997), -INT32_C(   569817786),  INT32_C(   894460139), -INT32_C(   508827989), -INT32_C(  2115614033), -INT32_C(   245946524), -INT32_C(   776293525), -INT32_C(    63251777),
        -INT32_C(  1989320381), -INT32_C(  1855490138), -INT32_C(  2100840489),  INT32_C(  1281651357),  INT32_C(   567167676), -INT32_C(   602790543), -INT32_C(  1750151976), -INT32_C(   376117082) },
      { -INT32_C(   260964023),  INT32_C(  1350687096),  INT32_C(   785533072),  INT32_C(  2004498107), -INT32_C(   224900992),  INT32_C(  1187949165),  INT32_C(   501054582), -INT32_C(  1375309468),
        -INT32_C(   341935757), -INT32_C(   482664622),  INT32_C(   588320360), -INT32_C(   979727548),  INT32_C(  1102525396),  INT32_C(  1418167773),  INT32_C(  1718707458),  INT32_C(  1226078166) },
      {  INT32_C(  1127592688),  INT32_C(   975597778), -INT32_C(  1017301122), -INT32_C(  1769408574),  INT32_C(   148389674), -INT32_C(   967024700), -INT32_C(  1691497020),  INT32_C(   904151364),
        -INT32_C(   965207564),  INT32_C(   134258314), -INT32_C(  1748279851),  INT32_C(  2133742420),  INT32_C(  1468466834),  INT32_C(   706601829), -INT32_C(   188396880), -INT32_C(  2144753268) },
      {  INT32_C(  1296474563),  INT32_C(   341132863), -INT32_C(   139714141),  INT32_C(   125229684),  INT32_C(  1163853280), -INT32_C(  1871741984),  INT32_C(  1384461510), -INT32_C(  1580028194),
        -INT32_C(  1880221616),  INT32_C(    27542366), -INT32_C(   638037916),  INT32_C(   182480682),  INT32_C(  1297038956),  INT32_C(  2145238969), -INT32_C(   774806797),  INT32_C(  1634902801) },
      {  INT32_C(   435183803),  INT32_C(   135959716),  INT32_C(   249631716), -INT32_C(   300367486) },
      {  INT32_C(    57018062),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),  INT32_C(           0),              INT32_MAX,  INT32_C(           0),  INT32_C(           0),
         INT32_C(           0),  INT32_C(           0),  INT32_C(           0),              INT32_MAX,  INT32_C(           0), -INT32_C(  1671139048),  INT32_C(           0),  INT32_C(           0) } },
  };

  for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) {
    simde__m512i src = simde_mm512_loadu_epi32(test_vec[i].src);
    simde__m512i a0 = simde_mm512_loadu_epi32(test_vec[i].a0);
    simde__m512i a1 = simde_mm512_loadu_epi32(test_vec[i].a1);
    simde__m512i a2 = simde_mm512_loadu_epi32(test_vec[i].a2);
    simde__m512i a3 = simde_mm512_loadu_epi32(test_vec[i].a3);
    simde__m128i b = simde_x_mm_loadu_epi32(test_vec[i].b);
    simde__m512i r = simde_mm512_maskz_4dpwssds_epi32(test_vec[i].k, src, a0, a1, a2, a3, &b);
    simde_test_x86_assert_equal_i32x16(r, simde_mm512_loadu_epi32(test_vec[i].r));
  }

  return 0;
#else
  fputc('\n', stdout);
  for (int i = 0 ; i < 8 ; i++) {
    simde__mmask16 k = simde_test_x86_random_mmask16();
    simde__m512i src = simde_test_x86_random_i32x16();
    simde__m512i a0 = simde_test_x86_random_i32x16();
    simde__m512i a1 = simde_test_x86_random_i32x16();
    simde__m512i a2 = simde_test_x86_random_i32x16();
    simde__m512i a3 = simde_test_x86_random_i32x16();
    simde__m128i b = simde_test_x86_random_i32x4();
    simde__m512i r = simde_mm512_maskz_4dpwssds_epi32(k, src, a0, a1, a2, a3, &b);

    simde_test_x86_write_mmask16(2, k, SIMDE_TEST_VEC_POS_FIRST);
    simde_test_x86_write_i32x16(2, src, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i32x16(2, a0, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i32x16(2, a1, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i32x16(2, a2, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i32x16(2, a3, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE);
    simde_test_x86_write_i32x16(2, r, SIMDE_TEST_VEC_POS_LAST);
  }
  return 1;
#endif
}

SIMDE_TEST_FUNC_LIST_BEGIN
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_4dpwssds_epi32)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_4dpwssds_epi32)
  SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_4dpwssds_epi32)
SIMDE_TEST_FUNC_LIST_END

#include <test/x86/avx512/test-avx512-footer.h>
